<?php
namespace app\admin\controller;

class Editor extends Base
{
    public function ueditorplus()
    {
        $action = $this->request->param('action/s', '');
        if ($action == 'config') {
            $config = [
                // 上传图片配置项
                // 执行上传图片的action名称，默认值：uploadimage
                "imageActionName" => "image",  
                // 提交的图片表单名称，默认值：upfile 
                "imageFieldName" => "file",
                // 上传大小限制，单位B，默认值：2048000
                "imageMaxSize" => 1024 * 1024 * cache('site')['image'],
                // 上传图片格式显示，默认值：[".png", ".jpg", ".jpeg", ".gif", ".bmp"]
                "imageAllowFiles" => array_map(function($value) { return '.' . $value; }, explode('|', cache('site')['image_ext'])),
                // 是否压缩图片,默认是true
                "imageCompressEnable" => true,
                // 图片压缩最长边限制，默认值：1600
                "imageCompressBorder" => 5000,
                // 插入的图片浮动方式，默认值：none
                "imageInsertAlign" => "none",
                // 图片访问路径前缀，默认值：空
                "imageUrlPrefix" => "",
            
                // 上传视频配置
                // 执行上传视频的action名称，默认值：uploadvideo
                "videoActionName" => "video",
                // 提交的视频表单名称，默认值：upfile
                "videoFieldName" => "file",
                // 视频访问路径前缀
                "videoUrlPrefix" => "",
                // 上传大小限制，单位B，默认值：102400000
                "videoMaxSize" => 1024 * 1024 * cache('site')['video'],
                // 上传视频格式显示
                "videoAllowFiles" => array_map(function($value) { return '.' . $value; }, explode('|', cache('site')['video_ext'])),
    
                // 上传文件配置
                // 执行上传文件的action名称，默认值：uploadfile
                "fileActionName" => "file",
                // 提交的文件表单名称，默认值：upfile
                "fileFieldName" => "file",
                // 文件访问路径前缀
                "fileUrlPrefix" => "",
                // 上传保存路径,可以自定义保存路径和文件名格式，默认值：{filename}{rand:6}
                "fileMaxSize" => 1024 * 1024 * cache('site')['attachment'],
                // 上传文件格式显示
                "fileAllowFiles" => array_map(function($value) { return '.' . $value; }, explode('|', cache('site')['attachment_ext'])),
    
                // 上传音频配置
                // // 执行上传音频的action名称，默认值：uploadaudio
                // "audioActionName" => "audio",
                // // 提交的音频表单名称，默认值：upfile
                // "audioFieldName" => "file",
                // // 音频访问路径前缀
                // "audioUrlPrefix" => "",
                // // 上传音频限制，单位B，默认值：102400000
                // "audioMaxSize" => 1024 * 1024 * 100,
                // // 上传音频格式显示
                // "audioAllowFiles" => ['.mp3'],
    
                // 涂鸦图片上传配置项
                // 执行上传涂鸦的action名称，默认值：uploadscrawl
                // "scrawlActionName" => "crawl",
                // // 提交的图片表单名称，默认值：upfile
                // "scrawlFieldName" => "file",
                // // 上传大小限制，单位B，默认值：2048000
                // "scrawlMaxSize" => 1024 * 1024 * cache('site')['image'],
                // // 图片访问路径前缀，默认值：空
                // "scrawlUrlPrefix" => "",
                // // 插入的图片浮动方式，默认值：none
                // "scrawlInsertAlign" => "none",
            
                // 截图工具上传
                // // 执行上传截图的action名称，默认值：uploadimage
                // "snapscreenActionName" => "snap",
                // // 图片访问路径前缀
                // "snapscreenUrlPrefix" => "",
                // // 插入的图片浮动方式，默认值：none
                // "snapscreenInsertAlign" => "none",
            
                // 抓取
                // 例外的图片抓取域名
                // "catcherLocalDomain" => [
                //     "127.0.0.1",
                //     "localhost",
                // ],
                // // 执行抓取远程图片的action名称，默认值：catchimage
                // "catcherActionName" => "catch",
                // // 提交的图片列表表单名称，默认值：source
                // "catcherFieldName" => "file",
                // // 图片访问路径前缀，默认值：空
                // "catcherUrlPrefix" => "",
                // // 上传保存路径,可以自定义保存路径和文件名格式，默认值：{filename}{rand:6}
                // "catcherMaxSize" => 1024 * 1024 * 10,
                // // 抓取图片格式显示，默认值：[".png", ".jpg", ".jpeg", ".gif", ".bmp"]
                // "catcherAllowFiles" => '',
            
                // // 列出图片
                // "imageManagerActionName" => "listImage",
                // "imageManagerListSize" => 20,
                // "imageManagerUrlPrefix" => "",
                // "imageManagerInsertAlign" => "none",
                // "imageManagerAllowFiles" => ['.jpg', '.png', '.jpeg'],
            
                // // 列出指定目录下的文件
                // "fileManagerActionName" => "listFile",
                // "fileManagerUrlPrefix" => "",
                // "fileManagerListSize" => 20,
                // "fileManagerAllowFiles" => ['.zip', '.pdf', '.doc'],
            ];

            return json($config);
        }

        // 涂鸦
        if ($action == 'crawl') {
            return;
        }

        // 远程抓取
        if ($action == 'catch') {
            return;
        }

        // 普通上传
        $res = [
            "state"     => 'SUCCESS',
            "url"       => '',
            "title"     => '',
            "original"  => '',
        ];

        $file = $this->request->file('file');
        
        $info = $file->move('uploads');

        if($info){
            $res['url'] = str_replace("\\", "/", '\\uploads\\' . $info->getSaveName());
            $res['title'] = $info->getFilename();
            $res['original'] = $info->getFilename();
        }else{
            // 上传失败获取错误信息
            $res['state'] = $file->getError();
        }
        
        return json($res);
    }
}
